package org.example.designPattern.prototypePattern6;

import lombok.Data;
import lombok.ToString;

import java.util.ArrayList;

@Data
@ToString
public class User implements Cloneable {
    private String name;
    private String password;
    private ArrayList<String> phones;

    protected User clone() {
        try {
            User user = (User) super.clone();
            //重点，如果要连带引用类型一起复制，需要添加底下一条代码，如果不加就对于是复制了引
            //用地址
//            默认引用类型为浅复制，这是设置了深复制
//            1. （浅复制）只是拷贝了基本类型的数据，而引用类型数据，只是拷贝了一份引用地址。
//            2. （深复制）在计算机中开辟了一块新的内存地址用于存放复制的对象。
            user.phones = (ArrayList<String>) this.phones.clone();//设置深复制
            return user;
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }
}